#include <iostream>
#include <stdio.h>
#define MAXSIZE 20
#define T 3
#define LT(a,b) ((a)<(b))
typedef int KeyType;
using namespace std;

typedef struct
{
    KeyType key;
}RedType;

typedef struct
{
    RedType r[MAXSIZE+1];
    int length;
}SqList;

void ShellInsert(SqList &L,int dk)
{
    int i,j;
    for(i=dk+1;i<=L.length;i++)
        if(LT(L.r[i].key,L.r[i-dk].key))
        {
            L.r[0]=L.r[i];
            for(j=i-dk;j>0&&LT(L.r[0].key,L.r[j].key);j-=dk)
                L.r[j+dk]=L.r[j];
            L.r[j+dk]=L.r[0];
        }
}

void ShellSort(SqList &L,int dlta)
{
    int k=1;
    for(;dlta>=1&&k;dlta/=2)
    {
        if(dlta==1)
            k=0;
        ShellInsert(L,dlta);
        for(int m=1;m<=L.length;m++)
            printf("%d ",L.r[m].key);
        printf("\n");
    }
}

int main()
{
    SqList L;
    int i;
    scanf("%d",&L.length);
    for(i=1;i<=L.length;i++)
        scanf("%d",&L.r[i].key);
    ShellSort(L,L.length/2);
    return 0;
}
